package com.vogue.supplymall.order.domain.dao;

import java.util.Date;
import java.util.List;
import java.util.Map;
import com.vogue.supplymall.order.domain.model.OrderPull;

public interface OrderPullDao extends BaseDao<OrderPull, Long> {

    /**
     * 查询指定企业的作为卖家的订单
     * @param syscodeid 系统唯一id
     * @param maxdate maxdate
     * @return List
     */
    public List<Map<String, Object>> pullSell(Long syscodeid, Date maxdate);

    /**
     * 查询指定企业的作为买家的订单
     * @param syscodeid 系统唯一id
     * @param maxdate maxdate
     * @return List
     */
    public List<Map<String, Object>> pullBuy(Long syscodeid, Date maxdate);

    /**
     * 根据syscodeid和订单号，查询订单号
     * @param syscodeId 系统唯一id
     * @param orderNums 订单号
     * @param repeatIds repeatIds
     * @return List
     */
    public List<Map<String, Object>> findOrdernumbers(Long syscodeId, String orderNums, String repeatIds);

    /**
     * 更改卖家订货单状态
     * @return String
     */
    public String updateOrderBillStatus();

    /**
     * 更改买家订货单状态
     * @return String
     */
    public String updateBuyOrderBillStatus();

    /**
     * 查找未更新成功的订货单
     * (未更新成功的即是当前状态和要更新状态不一致的单据，如果都一致，那么默认为更新成功)
     * @return String
     */
    public String findUpdateFailBill();

    /**
     * 根据订单号查找订单号是否存在
     * @return String
     */
    public String findOrderNumsByOrderNums();

    /**
     * 查询指定企业的作为卖家的订单总数
     * @param syscodeid 系统唯一id
     * @param maxdate maxdate
     * @return Map
     */
    public Map<String, Object> pullSellCount(Long syscodeid, Date maxdate);

    /**
     * 查询指定企业的作为买家的订单总数
     * @param syscodeid 系统唯一id
     * @param maxdate maxdate
     * @return Map
     */
    public Map<String, Object> pullBuyCount(Long syscodeid, Date maxdate);

    /**
     * 根据订单id找到对应的支付方式及金额
     * @param orderIds 单据id
     * @return List
     */
    public List<Map<String, Object>> getPayModeByOrderId(String orderIds);

    /**
     * 查询指定企业的作为卖家的退货订单总数
     * @param syscodeid 系统唯一id
     * @param maxdate maxdate
     * @return Map
     */
    public Map<String, Object> pullRefundSellCount(Long syscodeid, Date maxdate);

    /**
     * 查询指定企业的作为卖家的退货订单
     * @param syscodeid 系统唯一id
     * @param maxdate maxdate
     * @return List
     */
    public List<Map<String, Object>> pullRefundSell(Long syscodeid, Date maxdate);

    /**
     * 根据退货订单id找到对应的支付方式及金额
     * @param orderIds 单据id
     * @return List<Map<String, Object>>
     */
    public List<Map<String, Object>> getPayModeByRefundOrderId(String orderIds);

    /**
     * 更改退货单卖家订货单状态
     * @return String
     */
    public String updateRefundBillStatus();

    /**
     * 查找未更新成功的退货单
     * (未更新成功的即是当前状态和要更新状态不一致的单据，如果都一致，那么默认为更新成功)
     * @return String
     */
    public String findUpdateFailRefundBill();

}
